﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ddcCajamarca.BusinessEntities.Directorio;
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;

namespace ddcCajamarca.Repository.Mapping
{
    public class DetallePersonaActividadMap : EntityTypeConfiguration<DetallePersonaActividad>
    {
        public DetallePersonaActividadMap()
        {
            this.HasKey(d => new { d.IdPersona, d.IdActividad });

            this.Property(c => c.IdPersona)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

            this.Property(c => c.IdActividad)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

            this.Property(c => c.FechaRegistro)
                .HasColumnType("datetime2")
                .HasPrecision(7)
                .IsRequired();

            this.Property(c => c.Comentario)
                .HasMaxLength(120)
                .IsOptional();

            this.ToTable("DetallePersonaActividad");
            this.Property(c => c.IdPersona).HasColumnName("IdPersona");
            this.Property(c => c.IdActividad).HasColumnName("IdActividad");
            this.Property(c => c.FechaRegistro).HasColumnName("FechaRegistro");
            this.Property(c => c.Comentario).HasColumnName("Comentario");

            this.HasRequired(c => c.Persona)
                .WithMany(c => c.DetallePersonaActividades)
                .HasForeignKey(c => c.IdPersona)
                .WillCascadeOnDelete(true);
            this.HasRequired(c => c.Actividad)
                .WithMany(c => c.DetallePersonaActividad)
                .HasForeignKey(c => c.IdActividad)
                .WillCascadeOnDelete(true);
        }
    }
}
